草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 使用复合赋值运算符解决转换警告

在我们公司,我们制定了使用-Wconversion进行编译的政策,这会产生一些转换警告。虽然我同意这种额外的检查可以防止错误,但在以下情况下看到速记运算符的警告很烦人:uint8_tbyte;byte+=8;//conversionto'uint8_t'from'int'mayalteritsvalue[-Wconversion]现在这可以通过将其重写为byte=(uint8_t)(byte+8)来解决,这反过来会降低代码的可读性。有没有更好的方法来做到这一点? 最佳答案 考虑您收到警告的原因,即整型常量8的类型为int。C中的所有

c++ - 如何从 Windows 路径的 -D 编译器定义变量创建字符串文字

在Windows下,我有一个包含Windows样式路径的环境变量。我想将该路径构建到我的程序中并将其打印出来。因此,如果我的路径是c:\top,我会使用-DTOP=$(TOP)将其传递给编译器。请注意,在将其传递给编译器之前,我无法将其转换为c:\\top。现在,我有相当于:#defineTOP=c:\top我想要相当于:charpath[]="c:\\top";我不能只使用字符串化运算符:#defineWRAP1(X)#X#defineWRAP(X)WRAP1(X)charpath[]=WRAP(TOP);这只会产生字符串“c:\top”,编译器将其视为转义序列(即\t)。我认为一个

c++ - 如何将函数从 C++ 类传递给 C API?

如何将动态生成的C++函数作为*funcprt传递给CAPI?API导出这个:DllImportvoidapi_register_func(char*func_name,void(*funcptr)(char*,char*));我必须在运行时创建函数,因为我之前不知道它。所以我用了一个类:classJsFunc{public:char*JsFuncName;char*JsParameter;voidRunFunc(char*val1,char*val2){printf("\nJsFunc.runFuncexecuted,JsParameter=%spassed\n",JsParamet

c++ - 为以太网适配器设置自定义 ip 时无法绑定(bind)套接字

问题在我们运行RTEMS4.9.2的系统上,我们遇到了一个非常奇怪的套接字通信问题。我们正在设置套接字并使用以下命令进行绑定(bind)://Bindthesockettosetthelocalportsockaddr_inlocalSocketAddress={0};localSocketAddress.sin_family=AF_INET;localSocketAddress.sin_port=(u_short)localPort;localSocketAddress.sin_addr.s_addr=localAddress;if(bind(mSocket,(sockaddr*)&

c++ - 使用临时 volatile 限定符优化共享数组访问

我想知道在以下情况下临时的volatile限定符是否会产生正确的行为。假设ISR收集数组中的值,一旦收集到足够的值,它就会发出准备就绪的信号。intarray[10];//observenovolatilehereintidx=0;//neitherherevolatileboolready=false;//buthere这里的ISR是伪代码ISR(){if(idx=10);}假设我们可以保证array将只在ready发出信号并且元素被访问后被读取通过特定方法仅:intread(intidx){//temporaryvolatilesemanticsvolatileint*e=(vol

c++ - 使用 g++ 和 specs 文件进行预处理

问题涉及arm-none-eabi-g++6.2和针对newlib-nano的链接。当我使用-specs=nano.specs预处理C源代码时,文件newlib.h来自目录newlib-nano包括:echo'#include'|\/opt/gcc-arm-none-eabi-6_2-2016q4/bin/arm-none-eabi-gcc-specs=nano.specs-xc-E-|\grep'^#1.*newlib\.h'输出#1"/opt/gcc-arm-none-eabi-6_2-2016q4/arm-none-eabi/include/newlib-nano/newlib.

c++ - GNU 的 nana 库死了吗?是否有后继者在使用?

查看http://savannah.gnu.org/projects/nana/似乎上次的工作是四年前在Nana上完成的,nana的官方gnu.org主页是一个占位符。鉴于不活跃的项目往往会遭受比特腐烂:项目结束了吗?有继任者吗?人们是否有其他更好的C/C++断言/日志记录库? 最佳答案 如果您正在寻找日志记录库,请使用Log4Cxx:http://logging.apache.org/log4cxx/如果您正在寻找断言检查,请使用单元测试框架,例如UnitTest++:http://unittest-cpp.sourceforge

c++ - 获取正在运行的进程的堆栈回溯

我正在尝试从另一个程序获取正在运行的进程(PID和二进制路径已知)的堆栈回溯。有问题的程序是用C++编写的,用带有gdb调试符号的g++编译的。我正在寻找一个可在Linux、HP-UX和Solaris上运行的C或C++库,它产生的输出类似于使用以下内容调用popen()的输出:gdb-batch-x/dev/stdin我找到了lsstack(http://sourceforge.net/projects/lsstack/),它仅适用于Linux,并且知道Solaris的pstack程序。有人知道跨Unix/POSIX的可靠方法吗? 最佳答案

c++ - 是否有任何 c/c++ 编译器可以警告(或给出错误)或枚举转换为 int?

清理使用硬编码整数文字而不是枚举的旧c/c++代码,找到函数声明已被正确重构而不是正文的地方是乏味的。例如enumimportant{little=1,abit=2,much=3};voidblah(inte){//magicstuffhere}voidboing(inte){...}voidguck(importante){switch(e){case3://thiswouldbeagoodplaceforawarningblah(e);//andthisbreak;default:boing((int)e);//butthisisOK(althoughimperfectandawa

c++ - 我需要一个树转储选项,它在当前的 gcc 版本中不再存在

旧版本的GCC(例如4.0.2或4.1.2)有选项-df(参见OptionsforDebuggingYourProgramorGCCfor4.1.2)。我使用此选项转储文件filename.c.134r.life2和filename.c.126r.life1,因为我想从这些文件中提取一些值(例如每种方法的寄存器计数)。问题是,在当前版本的GCC(例如4.2.2)中,这个选项不再存在。还有其他选项,名称为filename.c.135r.jump的树转储几乎相同。但是此转储中也缺少寄存器计数,我找不到具有该值的转储。是否还有一个参数,它为我提供了当前GCC版本中的旧转储?